import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { CommonService } from '../common.service';
import { CommonList, List } from '../model/commom.model';

@Component({
  selector: 'app-list',
  templateUrl: './list.component.html',
  styleUrls: ['./list.component.scss']
})
/**
 * 描述：列表公共组件
 * 公司：xxx有限公司
 * 版权：xxx2020
 * 作者：oyjl
 * 时间：2020-04-26 15:56:01
 */
export class ListComponent implements OnInit, AfterViewInit {

  @Input() commonList: CommonList;
  @ViewChild('tabPanel') tabPanel;
  public list: List; // 列表配置
  public showLoading: boolean; // 显示加载动画
  public rows: Array<object>; // tab也内数据配置
  constructor(
    public commonService: CommonService,
    public router: Router) {
    this.showLoading = false;
  }

  ngOnInit() {
    this.list = this.commonList.list;
    this.sendQequest(0);
  }

  /**
   * 描述：动态处理tab页的宽度
   * 作者：oyjl
   * 时间：2020-04-26 16:02:48
   */
  ngAfterViewInit(): void {
    const width = 'calc(' + (1 / this.list.tabConfig.length * 100) + '% - 0px)';
    (this.list.tabConfig || []).forEach((element: any) => {
      if (!element.headStyle) {
        element.headStyle = {};
      }
      element.headStyle.width = width;
    });
  }

  /**
   * 描述：tab页点击回调函数
   * 作者：oyjl
   * 时间：2020-04-26 16:03:06
   */
  public onTabChange(event) {
    this.sendQequest(event.index);
  }

  /**
   * 描述：发送请求获取数据
   * 作者：oyjl
   * 时间：2020-04-26 17:53:55
   */
  public sendQequest(index) {
    this.showLoading = true;
    if (this.list.tabConfig[index].isRequest) {
      const url = this.list.tabConfig[index].url;
      const req = this.list.tabConfig[index].req;
      const resKey = this.list.tabConfig[index].resKey;
      this.commonService.getData(url, req, resKey).subscribe((res: any) => {
        if (res instanceof Array) {
          this.rows = res;
        }
        this.showLoading = false;
      });
    }
  }

  /**
   * 描述：返回上一历史界面
   * 作者：oyjl
   * 时间：2020-04-27 17:00:23
   */
  public goBack() {
    history.back();
  }

  /**
   * 描述：返回首页
   * 作者：oyjl
   * 时间：2020-04-28 09:05:40
   */
  public goHome() {
    this.router.navigateByUrl('/mobile/home');
  }
}
